package com.steel.yfmall.cloud.assistant.utils.kd;

import com.steel.yfmall.cloud.assistant.dto.zg.ZgCallWsdlAPIBaseDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.axis.client.Call;

import javax.xml.namespace.QName;

/**
 * @author yuchaohua
 * @version V1.0
 * @Title: EasLoginUtil
 * @Package com.steel.yfmall.cloud.assistant.utils.kd
 * @Description: (用一句话描述该文件做什么)
 * @date 2020/12/30 21:14
 */
@Slf4j
public class EasLoginUtil {

    /**
     * 金蝶EAS登录校验
     * @Title: easLogin
     * @Description: (这里用一句话描述这个方法的作用)
     * @Param params 参数说明
     * @Param zgCallWsdlAPIBaseDTO 参数说明
     * @return boolean    返回类型
     * @author yuchaohua
     * @date 2020/12/30 21:20
     */
    public static boolean easLogin(Object[] params, ZgCallWsdlAPIBaseDTO zgCallWsdlAPIBaseDTO) {
        try {
            //调用登陆接口
            org.apache.axis.client.Service service = new org.apache.axis.client.Service();
            Call call=(Call)service.createCall();
            call.setOperationName(zgCallWsdlAPIBaseDTO.getInterfaceName());
            call.setTargetEndpointAddress(zgCallWsdlAPIBaseDTO.getUrl());
            call.setReturnType(new QName("urn:client","WSContext"));
            call.setReturnClass(WSContext.class);
            call.setReturnQName(new QName("","loginReturn"));
            call.setMaintainSession(true);
            //登陆接口参数
            WSContext ctx=(WSContext)call.invoke(params);
            if(ctx.getSessionId() == null){
                log.error("登录EAS系统失败！请检查参数配置。");
            } else {
                log.debug("登录EAS系统成功！");
                log.debug("当前登录用户：" + ctx.getUserName());
                log.debug("SessionId = " + ctx.getSessionId());
                return true;
            }
        } catch (Exception e) {
            log.error("登录EAS系统失败！请联系开发人员。", e);
        }
        return false;
    }

}
